package ar.com.laley.centro.dao;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Transaction;
import org.hibernate.classic.Session;
import org.hibernate.criterion.Expression;

import ar.com.laley.centro.beans.Consulta;
import ar.com.laley.centro.beans.HibernateUtil;
import ar.com.laley.centro.beans.Materia;

public class ConsultaDAOImpl implements ConsultaDAO {

	/**
	 * @return lista de consultas a exportar
	 * @throws Exception
	 */
	public List exportar() throws Exception {

		return null;
	}

	/**
	 * @param Consulta
	 * @return boolean retorna true si la consulta se pudo guardar, false en
	 *         caso contrario
	 * @throws Exception
	 */
	public boolean registrar(Consulta consulta) {

		HibernateUtil.currentSession();
		Session session = (Session) HibernateUtil.currentSession();
		session.save(consulta);

		return true;
	}

	/**
	 * @param desde,hasta
	 * @return lista con todas las consultas realizadas entre un rango de fechas
	 * @throws Exception
	 */
	public List listar(int desde, int hasta) throws Exception {
		List result = new ArrayList();

		try {
			HibernateUtil.currentSession();
			Session session = (Session) HibernateUtil.currentSession();
			Transaction tx = session.beginTransaction();
			Criteria crit = session.createCriteria(Consulta.class);
			crit.add(Expression.between("consultaFecha", new Integer(desde),
					new Integer(hasta)));
			result = crit.list();
			tx.commit();
			// HibernateUtil.closeSession();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}

	public List listarMaterias() throws Exception {
		List result = new ArrayList();

		try {
			HibernateUtil.currentSession();
			Session session = (Session) HibernateUtil.currentSession();
			Transaction tx = session.beginTransaction();
			Criteria crit = session.createCriteria(Materia.class);
			// crit.add(Expression.between("consultaFecha", new Integer(desde),
			// new Integer(hasta)));
			result = crit.list();
			tx.commit();
			// HibernateUtil.closeSession();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}
}
